package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import modelo.Despacho;
import modelo.Drogueria;

import vista.VentanaAgregarCliente;
import vista.VentanaListadoDespachosCliente;
import vista.VentanaListadoDespachosClienteModeloTabla;
import vista.VentanaListadoDespachosTiempoModeloTabla;


public class ControladorListadoDespachosCliente implements ActionListener{
	private VentanaListadoDespachosCliente ventanaListadoDespachosCliente;
	private ArrayList<Despacho> listado;
	private Drogueria drogueria;
	private ControladorAgregarCliente controladorAgregarCliente;
	private VentanaAgregarCliente ventanaAgregarCliente;
	
	public ControladorListadoDespachosCliente(Drogueria dro) {
		// TODO Auto-generated constructor stub
		super();
		ventanaListadoDespachosCliente  = new VentanaListadoDespachosCliente();
		ventanaListadoDespachosCliente.setLocationRelativeTo(null);
		ventanaListadoDespachosCliente.setVisible(true);
		ventanaListadoDespachosCliente.agregarListener(this);
		this.listado = new ArrayList<>();
		drogueria = dro;
	}
	
	public void actionPerformed(ActionEvent ae){
		
		if (ae.getActionCommand().equalsIgnoreCase("Crear Reporte")){
			
			this.buscarCliente();
			
		} else if (ae.getActionCommand().equalsIgnoreCase("Salir")){
		
			ventanaListadoDespachosCliente.dispose();
		
		} else if (ae.getActionCommand().equalsIgnoreCase("Cancelar")){
			
			ventanaListadoDespachosCliente.limpiar();
		}
	}
	
	public void crearListado(){
		String desp;
		
		for (int i = 0; i < drogueria.cantPedido(); i++) {
			if (ventanaListadoDespachosCliente.getCedula().equalsIgnoreCase( drogueria.getPedido(i).getCedulaCliente() )){
				desp = drogueria.getPedido(i).getNumeroPedido();
				for (int j = 0; j < drogueria.cantDespachos(); j++){
					if (drogueria.getDespacho(j).getNumeroDespacho().equalsIgnoreCase( desp )){
						Despacho despa = new Despacho(listado.get(j).getNumeroDespacho(), listado.get(j).getFecha(),listado.get(j).getNumeroFactura());
						this.listado.add(despa);
					}
				}
				
				
			}
		}
	
		if(this.listado.size() <=0 )
			ventanaAgregarCliente.mostrarMensaje("El Cliente no Tiene Despacho");
	   else 
		   ventanaListadoDespachosCliente.setListado(new VentanaListadoDespachosClienteModeloTabla(this.listado));
	}
	
	public void buscarCliente(){
		
		String cedula = ventanaListadoDespachosCliente.getCedula();
		if (ventanaListadoDespachosCliente.getCedula() == "")
			
			ventanaListadoDespachosCliente.mostrarMensaje("Debe ingresar Cedula del Cliente");
		
		else {	
			
			int cli = drogueria.buscarCliente(cedula);
			
			if (cli == -1)
				
				ventanaAgregarCliente.mostrarMensaje("El Cliente no Existe");
				
			else {
				
				ventanaListadoDespachosCliente.setNombre(drogueria.getCliente(cli).getNombre() + " " + drogueria.getCliente(cli).getApellido());
				crearListado();	
			}
		}		
	}
}
